﻿namespace HanoiTower
{
    class Program
    {   // 实现这个算法可以简单分为三个步骤（1）把n-1个盘子由A 移到 C；（2）把第n个盘子由 A移到 B；（3） 把n-1个盘子由C 移到 B；
        //移动命令函数
        static void Move(int a, string M, string N)
        { Console.WriteLine($"Move {a} from {M} to {N}"); }
        //递归算法实现
        static void HanoiTower(int n, string TowerA, string TowerB, string TowerC)
        {
            if (n == 1) { Move(n, TowerA, TowerB); }
            else
            {
                HanoiTower(n - 1, TowerA, TowerB, TowerC);//将n-1个盘子由A经过B移动到C
                Move(n, TowerA, TowerB);             //执行最大盘子n移动
                HanoiTower(n - 1, TowerC, TowerA, TowerB);//剩下的n-1盘子，由C经过A移动到B
            }
        }
        static void Main(string[] args)
        {
            Console.WriteLine("请输入汉诺塔层数");
            int num = Convert.ToInt32(Console.ReadLine());
            HanoiTower(num, "A", "B", "C");
        }
    } 
    }

    
